//实现订阅者，我们已经知道监听器实在get函数执行了之后添加订阅者watcher的操作
//那我们需要考虑如何触发get函数，也就是说只要获取对应的属性值就可以出发了，
function Watcher(vm,exp,cb){
    this.cb=cb;
    this.vm=vm;
    this.exp=exp;
    this.value=this.get();
}

Watcher.prototype={
    update:function(){
        this.run();
    },
    //这部分我觉得是做缓存的
    run:function(){
        var value=this.vm.data[this.exp];
        var oldVal=this.value;
        if(value!==oldVal){
            this.value=value;
            this.cb.call(this.vm,value,oldVal);
        }
    },
    get:function(){
        Dep.target=this;
        var value=this.vm.data[this.exp];
        Dep.target=null;
        return value;
    }
}
